/**
 * 菜单类型枚举
 * @author xulh
 * @since 2024/03/11
 */
export class MenuTypeEnum {
  static NULL: BaseEnum = { value: 0, label: null };
  static MENU: BaseEnum = { value: 1, label: 'MENU' };
  static CATALOG: BaseEnum = { value: 2, label: 'CATALOG' };
  static EXTLINK: BaseEnum = { value: 3, label: 'EXTLINK' };
  static BUTTON: BaseEnum = { value: 4, label: 'BUTTON' };
  value: string;
  label: string;

  MenuTypeEnum(value: string, label: string) {
    this.value = value;
    this.label = label;
  }

  // 静态方法，根据 label 获取 value 值
  static getValueByLabel(label: string): string | undefined {
    // 遍历 GenderEnum 类的所有静态属性
    for (const key in MenuTypeEnum) {
      if (MenuTypeEnum.hasOwnProperty(key)) {
        const enumValue = MenuTypeEnum[key] as BaseEnum;
        if (enumValue.label === label) {
          return enumValue.label;
        }
      }
    }
    return undefined; // 如果没有找到匹配的 label，则返回 undefined
  }

  // 静态方法，根据 value 获取 label 值
  static getLabelByValue(value: string): string | undefined {
    // 遍历 GenderEnum 类的所有静态属性
    for (const key in MenuTypeEnum) {
      if (MenuTypeEnum.hasOwnProperty(key)) {
        const enumValue = MenuTypeEnum[key] as BaseEnum;
        if (enumValue.label === value) {
          return enumValue.label;
        }
      }
    }
    return undefined; // 如果没有找到匹配的 label，则返回 undefined
  }
}
